Distributed software applications, referred to herein as “cloud applications,” are commonly utilized to provide content and functionality to end-users over the Internet or other network infrastructure. For instance, a cloud application might be configured and utilized to provide an e-commerce website. The e-commerce website might provide functionality to the end-users for searching and browsing available products, adding desired products to a virtual shopping cart, and placing an order for the desired products. The underlying cloud application may further include back-end processing functionality for processing payments and fulfilling the order, tracking inventory of products, maintaining the online catalog, and the like. The cloud application for the e-commerce website may include multiple Web servers, database servers, application servers, and other computing resources interconnected and made accessible to the end-users over the Internet.
A cloud computing resource provider may make scalable computing resources available to customers over the Internet or other network infrastructure for the implementation of cloud applications, such as that described above. The cloud computing resource provider may provide facilities for customers to select and launch the desired computing resources, deploy the cloud application components to the computing resources, and maintain the application executing in the environment. In addition, the cloud computing resource provider may provide further facilities for the customer to quickly and easily scale up or scale down the numbers and types of resources allocated to the cloud application, either manually or through automatic scaling, as demand for or capacity requirements of the application change.
The computing resources provided by the cloud computing resource provider may be made available in discrete units, referred to herein as “instances.” An instance may represent a physical server hardware platform, a virtual machine instance executing on a server, or some combination of the two. Various types and configurations of instances may be made available, including different sizes of resources executing different operating systems (“OS”) and/or hypervisors, and with various installed software applications, runtimes, and the like. Instances may further be available in specific “availability zones,” representing a datacenter or other geographic location of the underlying computing hardware, for example,
The cloud computing resource provider may make instances available “on-demand,” allowing a customer to select a number of instances of a specific type and configuration (e.g. size, platform, tenancy, availability zone, and the like) and quickly launch the instances for deployment of the cloud application. On-demand instances may further be added or removed as needed, either manually or automatically through “auto-scaling,” as demand for or capacity requirements of the cloud application changes over time. The customer may incur ongoing usage costs related to their on-demand instances, based on the number of hours of operation and/or the actual resources utilized, for example.
The cloud computing resource provider may also make “reserved instances” available to the customer. Reserved instances may provide the customer with the ability to reserve a number of a specific type and configuration of instances for a fixed term, such as one year or three years, for a low, upfront cost, in exchange for reduced hourly or other usage costs, for example, if and when the instances are launched. This may allow the customer to defer costs related to scaling up the deployed cloud application in response to increase in demand, while ensuring that the right resources will be available when needed. While reserved instances provide customers with reliable, stand-by capacity for scaling of their cloud application, purchasing reserved instances may also lock the customer into a specific number, type, and/or configuration of computing resource in a specific availability zone for a longer period than desired. If the technical architecture or needs of the cloud application change, the customer may not be able to realize a return on their investment in the reserved instances.
It is with respect to these and other considerations that the disclosure made herein is presented.